export type TrackType = "video" | "audio" | "text" | "image" | "effect" | "transition" | "filter";

export interface BaseTractItem {
  id: string;
  type: TrackType;
  name: string;
  start: number; // 在轨道上的起始位置，单位为帧
  end: number; // 在轨道上的结束位置
  frameCount: number; // 总帧数
}

export async function getMD5(arrayBuffer: ArrayBuffer) {
  try {
    // 检查crypto.subtle是否可用
    if (typeof crypto !== "undefined" && crypto.subtle && crypto.subtle.digest) {
      const hashBuffer = await crypto.subtle.digest("SHA-1", arrayBuffer);
      const hashArray = Array.from(new Uint8Array(hashBuffer));
      const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
      return hashHex;
    } else {
      // 降级方案：使用时间戳和随机数生成唯一ID
      console.warn("crypto.subtle.digest is not available, using fallback method");
      return Date.now().toString(36) + Math.random().toString(36).substring(2);
    }
  } catch (error) {
    // 捕获可能的错误，如浏览器安全限制
    console.error("Error calculating MD5:", error);
    // 同样使用降级方案
    return Date.now().toString(36) + Math.random().toString(36).substring(2);
  }
}